<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Admin;
use App\Models\Node;
use App\Models\Role;
use Illuminate\Http\Request;

class RoleController extends CommonController
{
    /**
     * 列表。
     */
    public function index(Request $request)
    {
        $name=$request->get('name','');
        //收索
        $data=Role::when($name,function ($query) use ($name){
            $query->where('name','like',"%{$name}%");
        })->paginate($this->page);
        //withTrashed 包换软删除
        return view('admin.role.index', compact('data','name'));
    }

    /**
     * 添加显示
     *
     */
    public function create()
    {
        //
        return view('admin.role.create');
    }

    /**
     * 添加处理
     *
     */
    public function store(Request $request)
    {
        // 异常处理
        try {
            $this->validate($request, [
                'name' => 'required|unique:roles,name'
            ]);
        } catch (\Exception $e) {
            return ['status' => 1000, 'msg' => '验证不通过'];
        }
        // 接受 all 接受所有的数据
        // $request->only('name');
        Role::create($request->only('name'));
        return ['status' => 0, 'msg' => '添加角色成功'];
    }

    /**
     * 根据id显示单条数据
     */
    public function show(int $id)
    {

    }

    /**
     * 修改显示
     */
    public function edit($id)
    {
        $data = Role::find($id);
        return view('admin.role.edit', compact('data'));
    }

    /**
     * 修改处理
     */
    public function update(Request $request, $id)
    {
        try {
            $this->validate($request, [
                'name' => 'required|unique:roles,name,' . $id . ',id'
            ]);
        } catch (\Exception $e) {
            return ['status' => 1000, 'msg' => '验证不通过'];
        }
        // 接受 all 接受所有的数据
        // $request->only('name');
        Role::where('id',$id)->update($request->only('name'));
        return ['status' => 0, 'msg' => '修改角色成功'];
    }

    public function node(Role $role) {
      //  dump($role->nodes->toArray());
        //dump($role->nodes()->pluck('name','id')->toArray());
        // 读取出所有的权限
        $nodeAll = (new Node())->getAllList();
        // 读取当前角色所拥有的权限
        $nodes = $role->nodes()->pluck('id')->toArray();

        return view('admin.role.node',compact('role','nodeAll','nodes'));
    }
    public function nodeSave(Request $request,Role $role){
        // 关联模型的数据同步
        $role->nodes()->sync($request->get('node'));
        return redirect(route('admin.role.node',$role));
    }

    /**
     * 删除处理
     */
    public function destroy( int $id)
    {
        //
        Role::destroy($id);
        return ['status'=>0,'msg'=>'删除成功'];
    }
}
